package com.project.basis.utils

import android.util.Log
import com.project.basis.BuildConfig

object LogUtils {

    private const val TAG = "Project-Basis"

    @JvmOverloads
    fun e(msg: String, tag: String = TAG, tr: Throwable = Throwable()) {
        baseLogCat("e", tag, msg, tr)
    }

    @JvmOverloads
    fun d(msg: String, tag: String = TAG) {
        baseLogCat("d", tag, msg)
    }

    @JvmOverloads
    fun i(msg: String, tag: String = TAG) {
        baseLogCat("i", tag, msg)
    }

    @JvmOverloads
    fun v(msg: String, tag: String = TAG) {
        baseLogCat("v", tag, msg)
    }

    @JvmOverloads
    fun w(msg: String, tag: String = TAG) {
        baseLogCat("w", tag, msg)
    }

    private fun baseLogCat(
        type: String,
        tag: String,
        msg: String,
        tr: Throwable = Throwable()
    ) {
        if (BuildConfig.LOG_CAT_OUTPUT) when (type) {
            "e" -> Log.e(tag, msg, tr)
            "d" -> Log.d(tag, msg)
            "i" -> Log.i(tag, msg)
            "v" -> Log.v(tag, msg)
            "w" -> Log.w(tag, msg)
        }
    }
}